#pragma once
#ifndef __VWORLD_H__
#define __VWORLD_H__
#include "VScene.h"
#include "VSceneEntity.h"

// for manager levels. physics scene, render scene. and etc. 
struct VWorld
{
	virtual void LoadLevel(const char* Level)= 0;
	virtual void UnloadLevel() =0;
	virtual void Update(float DeltaTime) = 0;

	/// Render World
	virtual void RenderWorld(const VMatrix& Projection, const VMatrix& ViewMatrix, UINT Width, UINT Height) = 0;

	virtual void RenderScene(){}
	inline VScene* GetScene() { return m_LevelScene;}
	
	virtual void AddSceneObject(VSceneObject* SceneObject) = 0;
	virtual void RemoveSceneObject(VSceneObject* SceneObject) = 0;


protected:
	VScene* m_LevelScene;
};


#endif 
